import axios from 'axios'

// 支持 window 变量动态配置后端地址
const baseURL = window.APP_CONFIG?.BASE_API || '/api'

// 创建axios实例
const service = axios.create({
  baseURL,
  timeout: 5000
})

/**
 * 获取习惯列表
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 当前页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} [params.name] - 习惯名称
 * @param {string} [params.difficulty] - 难度
 * @param {number} [params.level] - 等级
 * @returns {Promise}
 */
export function getHabitList(params) {
  return service({
    url: '/todo/habit/list',
    method: 'post',
    data: params
  })
}

/**
 * 获取习惯详情
 * @param {number} id - 习惯ID
 * @returns {Promise}
 */
export function getHabitDetail(id) {
  return service({
    url: `/todo/habit/${id}`,
    method: 'get'
  })
}

/**
 * 创建新习惯
 * @param {Object} data - 习惯数据
 * @param {string} data.name - 习惯名称
 * @param {number} data.targetCount - 目标数量
 * @param {number} data.level - 等级
 * @param {string} data.difficulty - 难度
 * @param {string} data.trigger - 触发锚点
 * @param {string} data.reward - 奖励
 * @returns {Promise}
 */
export function createHabit(data) {
  return service({
    url: '/todo/habit',
    method: 'post',
    data
  })
}

/**
 * 更新习惯
 * @param {Object} data - 习惯数据
 * @param {number} data.id - 习惯ID
 * @param {string} [data.name] - 习惯名称
 * @param {number} [data.targetCount] - 目标数量
 * @param {number} [data.level] - 等级
 * @param {string} [data.difficulty] - 难度
 * @param {string} [data.trigger] - 触发锚点
 * @param {string} [data.reward] - 奖励
 * @returns {Promise}
 */
export function updateHabit(data) {
  return service({
    url: '/todo/habit',
    method: 'put',
    data
  })
}

/**
 * 删除习惯
 * @param {number} id - 习惯ID
 * @returns {Promise}
 */
export function deleteHabit(id) {
  return service({
    url: `/todo/habit/${id}`,
    method: 'delete'
  })
}

/**
 * 更新习惯完成数量
 * @param {Object} data - 更新数据
 * @param {number} data.id - 习惯ID
 * @param {number} data.completedCount - 完成数量
 * @returns {Promise}
 */
export function updateHabitCount(data) {
  return service({
    url: `/todo/habit/count`,
    method: 'post',
    data: {
      id: data.id,
      completedCount: data.completedCount,
      isContent: data.isContent,
      habitContent: data.habitContent
    }
  })
} 